package org.example.config;


import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.pinecone.PineconeEmbeddingStore;
import dev.langchain4j.store.embedding.pinecone.PineconeServerlessIndexConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.UUID;


/**
 * 向量存储配置-pinecone
 */
@Configuration
public class EmbeddingStoreConfig {

    @Autowired
    private EmbeddingModel embeddingModel;

    @Bean
    public EmbeddingStore<TextSegment> embeddingStore() {

        EmbeddingStore<TextSegment> embeddingStore = PineconeEmbeddingStore.builder()
                .apiKey("pcsk_5HxkQt_9kSsvjX13n5yAK3fJYjGFUbdiJpePDit2VRV671zm8qQw29ZZNGc1vwWHZd1mdx")  // Pinecone的API密钥
                .index("chatai-index")              // Pinecone的索引名称，不存在时会自动创建
                .nameSpace(UUID.randomUUID().toString())        // 命名空间，用于隔离数据，不存在时会自动创建
                .createIndex(PineconeServerlessIndexConfig.builder()
                        .cloud("AWS")       //指定索引部署在 AWS 云服务上。
                        .region("us-east-1")    //指定索引所在的 AWS 区域为 us-east-1。
                        .dimension(embeddingModel.dimension()) //指定索引的向量维度，该维度与 embeddedModel 生成的向量维度相同。
                        .build())
                .build();
        return embeddingStore;
    }
}
